"""
    基于select的并发服务模型
"""

from select import *
from socket import *

#服务端地址
HOST="0.0.0.0"
PORT=1234
ADDR=(HOST,PORT)

#创建监听套接字
sock=socket()
sock.bind(ADDR)
sock.listen(3)
#配合非阻塞IO
sock.setblocking(False)

rlist=[sock]
wlist=[]
xlist=[]

#循环监控关注IO的发生
while True:
    rs,ws,xs=select(rlist,wlist,xlist)
    for r in rs:
        if r is sock:
            #处理客户端连接
            connfd,addr=r.accept()
            print("Connect from",addr)
            connfd.setblocking(False)
            rlist.append(connfd)#增加关注对象
        else:
            #处理客户端消息
            data=r.recv(1024)
            #处理客户端退出
            if not data:
                rlist.remove(r)#不在关注
                r.close()
                continue
            print(data.decode())
            r.send(b'Thanks')













































